package com.ruoyi.durian.service;

import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.durian.domain.LlCoupon;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.durian.domain.dto.CouponInfoDto;
import com.ruoyi.durian.domain.vo.CouponGrantVo;
import java.util.List;

/**
 * @author lenovo
 * @description 针对表【ll_coupon(优惠券模块-优惠券表)】的数据库操作Service
 * @createDate 2024-07-26 16:17:15
 */
public interface LlCouponService extends IService<LlCoupon> {

    List<LlCoupon> selectList(Integer status);

    List<LlCoupon> selectLlCouponList(LlCoupon llCoupon);

    /**
     * 查询优惠券模块-优惠券
     *
     * @param id 优惠券模块-优惠券主键
     * @return 优惠券模块-优惠券
     */
    LlCoupon selectLlCouponById(Long id);


    /**
     * 新增优惠券模块-优惠券
     *
     * @param llCoupon 优惠券模块-优惠券
     * @return 结果
     */
    AjaxResult insertLlCoupon(LlCoupon llCoupon);

    /**
     * 修改优惠券模块-优惠券
     *
     * @param llCoupon 优惠券模块-优惠券
     * @return 结果
     */
    AjaxResult updateLlCoupon(LlCoupon llCoupon);

    /**
     * 批量删除优惠券模块-优惠券
     *
     * @param ids 需要删除的优惠券模块-优惠券主键集合
     * @return 结果
     */

    /**
     * 删除优惠券模块-优惠券信息
     *
     * @param ids 优惠券模块-优惠券主键
     * @return 结果
     */
    AjaxResult deleteLlCouponByIds(Long[] ids);

    /**
     * 添加编辑优惠券
     *
     * @param llCoupon
     * @return
     */
    AjaxResult saveOrUpdateCoupon(LlCoupon llCoupon);

    /**
     * 删除优惠券
     *
     * @return
     */
    AjaxResult delCoupon(Integer id);

    /**
     * 发放优惠券
     *
     * @param couponGrantVo
     * @return
     */
    AjaxResult grantCoupon(CouponGrantVo couponGrantVo);

    /**
     * 优惠券发布历史
     *
     * @return
     */
    List<?> couponSubmitList();

    /**
     * 查询我的卡券未失效的数量
     *
     * @return
     */
    Long couponCount();

    /**
     * 优惠券列表展示
     */
    AjaxResult couponSelectList();

    /**
     * 优惠券详情
     *
     * @param id
     * @return
     */
    CouponInfoDto selectByCouponId(Integer id);
}
